/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package application;

/**
 *
 * @author Hui
 */
import java.sql.*;
import java.io.*;
import java.nio.*;

public class UploadImage {

    private Connection dbConnection;
    private String driverName = "com.mysql.jdbc.Driver";
    private String dbURL = "jdbc:mysql://194.47.47.18:3306/DA5221_GRP8";
    private String userID = "DA5221_GRP8";
    private String passwd = "iXiRGq";

    public boolean storeImage(String sqlstr, File file) {
        String statement = "Select * FROM person where UserName = '" +sqlstr + "'";
        try {
            FileInputStream fin = new FileInputStream(file);
            ByteBuffer nbf = ByteBuffer.allocate((int) file.length());
            byte[] array = new byte[1024];
            int offset = 0, length = 0;
            while ((length = fin.read(array)) > 0) {
                if (length != 1024) {
                    nbf.put(array, 0, length);
                } else {
                    nbf.put(array);
                }
                offset += length;

            }
            fin.close();
            byte[] content = nbf.array();
            return setImage(statement, content);

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return false;

    }

    private boolean setImage(String sqlstr, byte[] in) {
        boolean flag = false;
        if (sqlstr == null) {
            sqlstr = "select * from picture_db";
        }
        try {
            Class.forName(driverName);
            dbConnection = DriverManager.getConnection(dbURL, userID, passwd);
            Statement stmt = dbConnection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
            //  Statement stmt = dbConnection.createStatement();
            ResultSet rs = stmt.executeQuery(sqlstr);
            if (rs.next()) {

                // System.out.println(rs.getString(1));
                rs.updateBytes(2, in);
                rs.updateRow();
            } else {
                rs.moveToInsertRow();
                rs.updateString(1, "01");
                rs.updateBytes(2, in);
                rs.insertRow();
            }
            rs.close();
            flag = true;


        } catch (Exception e) {
            e.printStackTrace();
        }
        return flag;

    }
}
